package com.example.miscontactos.Entidades;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class GetMensajesWebHandler extends DefaultHandler
{
	private List<MensajesWebsEntity> listaMensajes;
	private MensajesWebsEntity mensajeActual;
	private StringBuilder texto;
	private final String MESSAGES_LIST = "messages-list";
	private final String MESSAGE_ITEM = "message";
	private final String FROM = "from";
	private final String FECHA = "timestamp";
	private final String mensajeError = "";
	
	public List<MensajesWebsEntity> getNuevosMensajes()
	{
		return listaMensajes;
	}
	
	public String getErrorMessage()
	{
		return mensajeError;
	}
	
	@Override
	public void characters(char[] ch, int start, int length) throws SAXException
	{
		super.characters(ch, start, length);
		if (this.listaMensajes != null)
			texto.append(ch, start, length);
	}
	
	 @Override 
	  public void startElement(String namespaceURI, String localName, String qName, Attributes atr) throws SAXException 
	  {	 
	    if(localName.equals(MESSAGES_LIST))
	    { 	 
	    	mensajeActual = new MensajesWebsEntity();
	    }
	    else
	    {
	    	if (localName.equals(MESSAGE_ITEM) && mensajeActual != null)
	    	{
	    		mensajeActual = new MensajesWebsEntity();
	    		mensajeActual.from = atr.getValue(FROM);
	    		mensajeActual.fecha = atr.getValue(FECHA);
	    	}	    		
	    }
	  }
	 
	 @Override
	 public void startDocument() throws SAXException
	 {
		 super.startDocument();
		 texto = new StringBuilder(); 
		 listaMensajes = new ArrayList<MensajesWebsEntity>();
	 }
	 
	 @Override
	    public void endElement(String uri, String localName, String qName) throws SAXException 
	    {
		 	if(mensajeActual != null)
		 	{
		 		if(localName.equals(MESSAGE_ITEM))
		 		{
		 			mensajeActual.mensaje = texto.toString();
		 		}
		 	}
	        if (localName.equalsIgnoreCase(MESSAGE_ITEM)) 
	        {
	            listaMensajes.add(mensajeActual);
	        }
	        texto.setLength(0);
	    }
}
